package com.jeesite.modules.dept.entity;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import java.util.Date;
import com.jeesite.common.mybatis.annotation.JoinTable;
import com.jeesite.common.mybatis.annotation.JoinTable.Type;
import com.fasterxml.jackson.annotation.JsonFormat;

import com.jeesite.common.entity.DataEntity;
import com.jeesite.common.mybatis.annotation.Column;
import com.jeesite.common.mybatis.annotation.Table;
import com.jeesite.common.mybatis.mapper.query.QueryType;

/**
 * dept_employeesEntity
 * @author ccz
 * @version 2025-03-20
 */
@Table(name="employees", alias="a", label="员工信息表信息", columns={
		@Column(name="id", attrName="id", label="员工ID", isPK=true),
		@Column(name="name", attrName="name", label="员工姓名", queryType=QueryType.LIKE),
		@Column(name="native_place", attrName="nativePlace", label="员工籍贯"),
		@Column(name="work_content", attrName="workContent", label="员工工作内容"),
		@Column(name="annual_work_hours", attrName="annualWorkHours", label="员工全年工作时间", comment="员工全年工作时间（小时）", isUpdateForce=true),
		@Column(name="start_date", attrName="startDate", label="员工来单位开始日期", isUpdateForce=true),
		@Column(name="end_date", attrName="endDate", label="员工来单位结束日期", isUpdateForce=true),
		@Column(name="location", attrName="location", label="员工所在地区"),
		@Column(name="hobby", attrName="hobby", label="员工业余爱好", comment="员工业余爱好（0游泳 1篮球 2...）"),
		@Column(name="performance", attrName="performance", label="员工表现", comment="员工表现（0极差 1较差 2一般 3良好 4优秀）"),
		@Column(name="achievement_score", attrName="achievementScore", label="员工政绩成绩分数", isUpdateForce=true),
		@Column(name="affiliated_unit", attrName="affiliatedUnit", label="员工所属单位"),
		@Column(name="emp_status", attrName="empStatus", label="员工状态", comment="员工状态（0正常 1删除 2停用）"),
		@Column(name="creator", attrName="creator", label="创建者"),
		@Column(name="create_time", attrName="createTime", label="创建时间", isUpdateForce=true),
		@Column(name="updater", attrName="updater", label="更新者"),
		@Column(name="update_time", attrName="updateTime", label="更新时间", isUpdateForce=true),
		@Column(name="remarks", attrName="remarks", label="备注信息", queryType=QueryType.LIKE),
		@Column(name="resume", attrName="resume", label="员工附件", comment="员工附件（简历）"),
		@Column(name="avatar", attrName="avatar", label="员工头像", comment="员工头像（图片）"),
	}, orderBy="a.id DESC"
)
public class Employees extends DataEntity<Employees> {
	
	private static final long serialVersionUID = 1L;
	private String name;		// 员工姓名
	private String nativePlace;		// 员工籍贯
	private String workContent;		// 员工工作内容
	private Integer annualWorkHours;		// 员工全年工作时间（小时）
	private Date startDate;		// 员工来单位开始日期
	private Date endDate;		// 员工来单位结束日期
	private String location;		// 员工所在地区
	private String hobby;		// 员工业余爱好（0游泳 1篮球 2...）
	private String performance;		// 员工表现（0极差 1较差 2一般 3良好 4优秀）
	private Integer achievementScore;		// 员工政绩成绩分数
	private String affiliatedUnit;		// 员工所属单位
	private String empStatus;		// 员工状态（0正常 1删除 2停用）
	private String creator;		// 创建者
	private Date createTime;		// 创建时间
	private String updater;		// 更新者
	private Date updateTime;		// 更新时间
	private String resume;		// 员工附件（简历）
	private String avatar;		// 员工头像（图片）

	public Employees() {
		this(null);
	}
	
	public Employees(String id){
		super(id);
	}
	
	@NotBlank(message="员工姓名不能为空")
	@Size(min=0, max=50, message="员工姓名长度不能超过 50 个字符")
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
	@Size(min=0, max=100, message="员工籍贯长度不能超过 100 个字符")
	public String getNativePlace() {
		return nativePlace;
	}

	public void setNativePlace(String nativePlace) {
		this.nativePlace = nativePlace;
	}
	
	public String getWorkContent() {
		return workContent;
	}

	public void setWorkContent(String workContent) {
		this.workContent = workContent;
	}
	
	public Integer getAnnualWorkHours() {
		return annualWorkHours;
	}

	public void setAnnualWorkHours(Integer annualWorkHours) {
		this.annualWorkHours = annualWorkHours;
	}
	
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	public Date getStartDate() {
		return startDate;
	}

	public void setStartDate(Date startDate) {
		this.startDate = startDate;
	}
	
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	public Date getEndDate() {
		return endDate;
	}

	public void setEndDate(Date endDate) {
		this.endDate = endDate;
	}
	
	@Size(min=0, max=100, message="员工所在地区长度不能超过 100 个字符")
	public String getLocation() {
		return location;
	}

	public void setLocation(String location) {
		this.location = location;
	}
	
	@Size(min=0, max=55, message="员工业余爱好长度不能超过 55 个字符")
	public String getHobby() {
		return hobby;
	}

	public void setHobby(String hobby) {
		this.hobby = hobby;
	}
	
	@Size(min=0, max=55, message="员工表现长度不能超过 55 个字符")
	public String getPerformance() {
		return performance;
	}

	public void setPerformance(String performance) {
		this.performance = performance;
	}
	
	public Integer getAchievementScore() {
		return achievementScore;
	}

	public void setAchievementScore(Integer achievementScore) {
		this.achievementScore = achievementScore;
	}
	
	@Size(min=0, max=100, message="员工所属单位长度不能超过 100 个字符")
	public String getAffiliatedUnit() {
		return affiliatedUnit;
	}

	public void setAffiliatedUnit(String affiliatedUnit) {
		this.affiliatedUnit = affiliatedUnit;
	}
	
	@Size(min=0, max=55, message="员工状态长度不能超过 55 个字符")
	public String getEmpStatus() {
		return empStatus;
	}

	public void setEmpStatus(String empStatus) {
		this.empStatus = empStatus;
	}
	
	@Size(min=0, max=50, message="创建者长度不能超过 50 个字符")
	public String getCreator() {
		return creator;
	}

	public void setCreator(String creator) {
		this.creator = creator;
	}
	
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	public Date getCreateTime() {
		return createTime;
	}

	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}
	
	@Size(min=0, max=50, message="更新者长度不能超过 50 个字符")
	public String getUpdater() {
		return updater;
	}

	public void setUpdater(String updater) {
		this.updater = updater;
	}
	
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	public Date getUpdateTime() {
		return updateTime;
	}

	public void setUpdateTime(Date updateTime) {
		this.updateTime = updateTime;
	}
	
	@Size(min=0, max=255, message="员工附件长度不能超过 255 个字符")
	public String getResume() {
		return resume;
	}

	public void setResume(String resume) {
		this.resume = resume;
	}
	
	@Size(min=0, max=255, message="员工头像长度不能超过 255 个字符")
	public String getAvatar() {
		return avatar;
	}

	public void setAvatar(String avatar) {
		this.avatar = avatar;
	}
	
}